Дата: 02.01.2016
* Таймер. * Программа КОНЦЕПТ, 02.01.2016, www.gendoc.ru * Параметры времени (начало, конец, шаг) задаются в секундах. ТАЙМЕР_ПОДГОТОВКА ТАЙМЕР_НАЧАЛО ТАЙМЕР_РИСОВАТЬ Кнопка_выхода ****** Функции обработки событий ****** функция _$ВЫБОР если [_$ВЫБОР;ОБЪЕКТ] == выход ТАЙМЕР_КОНЕЦ показать сообщение 'Программа завершена.' СТОП конец возврат функция _$ТАЙМЕР если [ТАЙМЕР;состояние_таймера] == запущен ТАЙМЕР_ШАГ вызвать [ТАЙМЕР;событие_действие] конец возврат ****** Вспомогательные функции ****** * Кнопка остановки таймера и последующего завершения работы программы функция Кнопка_выхода присвоить выход_х1 10 выход_у1 100 выход_х2 190 выход_у2 150 $ЦветТекста = [$черный] $ЦветКисти = [$голубой] $ЦветЛинии = [$ЦветКисти] $РазмерТекста = 12 рисовать прямоугольник [выход_х1] [выход_у1] [выход_х2] [выход_у2] рисовать текстВПрямоугольнике [выход_х1] [выход_у1] [выход_х2] [выход_у2] 'Остановить таймер' рисовать добавитьСенсор [выход_х1] [выход_у1] [выход_х2] [выход_у2] выход возврат ****** Функции работы с таймером ****** функция ТАЙМЕР_ПОДГОТОВКА сущность ТАЙМЕР слева 10 сверху 10 ширина 180 высота 50 цвет_фона [$желтый] цвет_цифр [$синий] размер_цифр 24 время_начало 0 время_конец 10 время_шаг 0.1 режим_таймера (список взять прямой_отсчет;обратный_отсчет;текущее_время 2 ) состояние_таймера (список взять остановлен;запущен 1 ) текущее_значение 0 событие_останов ТАЙМЕР_СОБЫТИЕ_ОСТАНОВ событие_действие ТАЙМЕР_РИСОВАТЬ создать возврат функция ТАЙМЕР_НАЧАЛО выбрать [ТАЙМЕР;режим_таймера] вариант прямой_отсчет ТАЙМЕР;текущее_значение = [ТАЙМЕР;время_начало] вариант обратный_отсчет ТАЙМЕР;текущее_значение = [ТАЙМЕР;время_конец] вариант текущее_время конецВыбора ТАЙМЕР;состояние_таймера = запущен $СобытиеПоТаймеру = [ТАЙМЕР;время_шаг] * 1000 возврат функция ТАЙМЕР_КОНЕЦ $СобытиеПоТаймеру = 0 ТАЙМЕР;состояние_таймера = остановлен вызвать [ТАЙМЕР;событие_останов] возврат функция ТАЙМЕР_РИСОВАТЬ память локальный х1 у1 х2 у2 стр $ТипЛинии = 1 $ТипКисти = 1 $ЦветТекста = [ТАЙМЕР;цвет_цифр] $ЦветКисти = [ТАЙМЕР;цвет_фона] $ЦветЛинии = [$ЦветКисти] $РазмерТекста = [ТАЙМЕР;размер_цифр] х1 = [ТАЙМЕР;слева] у1 = [ТАЙМЕР;сверху] х2 = [х1] + [ТАЙМЕР;ширина] - 1 у2 = [у1] + [ТАЙМЕР;высота] - 1 выбрать [ТАЙМЕР;режим_таймера] вариант прямой_отсчет;обратный_отсчет стр = (ВРЕМЯ_ИЗ_СЕКУНД [ТАЙМЕР;текущее_значение] ) вариант текущее_время стр = [$время] конецВыбора рисовать прямоугольник [х1] [у1] [х2] [у2] рисовать текстВПрямоугольнике [х1] [у1] [х2] [у2] [стр] возврат функция ТАЙМЕР_ШАГ выбрать [ТАЙМЕР;режим_таймера] вариант прямой_отсчет если [ТАЙМЕР;текущее_значение] < [ТАЙМЕР;время_конец] вычислить + ТАЙМЕР;текущее_значение $ [ТАЙМЕР;время_шаг] иначе ТАЙМЕР_КОНЕЦ конец вариант обратный_отсчет если [ТАЙМЕР;текущее_значение] > [ТАЙМЕР;время_начало] вычислить - ТАЙМЕР;текущее_значение $ [ТАЙМЕР;время_шаг] иначе ТАЙМЕР_КОНЕЦ конец вариант текущее_время конецВыбора возврат функция ТАЙМЕР_СОБЫТИЕ_ОСТАНОВ показать сообщение 'Таймер остановлен!' возврат функция ВРЕМЯ_ИЗ_СЕКУНД секунды память локальный стр мин сек вычислить делитьЦелое мин [секунды] 60 вычислить остаток сек [секунды] 60 если [мин] < 10 мин = "0[мин]" конец если [сек] < 10 сек = "0[сек]" конец стр = "[мин]:[сек]" возврат [стр]